/*********************\
* Author:Dzlua
* QQ:505544956
* Time:2017/04/15
\**********************/
#ifndef __LUA_LIST_H__
#define __LUA_LIST_H__
#pragma once

#include "../../Layout/LuaVerticalLayout.h"

namespace DuiLib {

class LuaList : public LuaVerticalLayout
{
    SDLUA_CLASS_DECLARE(LuaList);

    bool GetScrollSelect();
    void SetScrollSelect(bool bScrollSelect);
    int GetCurSel();
    int GetCurSelActivate();
    int SelectItem(LuaState *L);
    bool SelectItemActivate(int iIndex);

    int SelectMultiItem(LuaState *L);
    void SetMultiSelect(bool bMultiSel);
    bool IsMultiSelect();
    int UnSelectItem(LuaState *L);
    void SelectAllItems();
    void UnSelectAllItems();
    int GetSelectItemCount();
    int GetNextSelItem(int nItem);

    int GetHeader(LuaState *L);  
    int GetList(LuaState *L);
    UINT GetListType();
    //TListInfoUI* GetListInfo();

    int GetItemAt(LuaState *L);
    int GetItemIndex(LuaState *L);
    int SetItemIndex(LuaState *L);
    int GetCount();
    int Add(LuaState *L);
    int AddAt(LuaState *L);
    int Remove(LuaState *L);
    bool RemoveAt(int iIndex);
    void RemoveAll();

    void EnsureVisible(int iIndex);
    void Scroll(int dx, int dy);

    bool IsDelayedDestroy();
    void SetDelayedDestroy(bool bDelayed);
    int GetChildPadding();
    void SetChildPadding(int iPadding);

    void SetItemFont(int index);
    void SetItemTextStyle(UINT uStyle);
    int SetItemTextPadding(LuaState *L);
    void SetItemTextColor(DWORD dwTextColor);
    void SetItemBkColor(DWORD dwBkColor);
    int SetItemBkImage(LuaState *L);
    void SetAlternateBk(bool bAlternateBk);
    void SetSelectedItemTextColor(DWORD dwTextColor);
    void SetSelectedItemBkColor(DWORD dwBkColor);
    int SetSelectedItemImage(LuaState *L); 
    void SetHotItemTextColor(DWORD dwTextColor);
    void SetHotItemBkColor(DWORD dwBkColor);
    int SetHotItemImage(LuaState *L);
    void SetDisabledItemTextColor(DWORD dwTextColor);
    void SetDisabledItemBkColor(DWORD dwBkColor);
    int SetDisabledItemImage(LuaState *L);
    void SetItemLineColor(DWORD dwLineColor);
    void SetItemShowRowLine(bool bShowLine);
    void SetItemShowColumnLine(bool bShowLine);
    bool IsItemShowHtml();
    void SetItemShowHtml(bool bShowHtml);
    int GetItemTextPadding(LuaState *L);
    DWORD GetItemTextColor();
    DWORD GetItemBkColor();
    int GetItemBkImage(LuaState *L);
    bool IsAlternateBk();
    DWORD GetSelectedItemTextColor();
    DWORD GetSelectedItemBkColor();
    int GetSelectedItemImage(LuaState *L);
    DWORD GetHotItemTextColor();
    DWORD GetHotItemBkColor();
    int GetHotItemImage(LuaState *L);
    DWORD GetDisabledItemTextColor();
    DWORD GetDisabledItemBkColor();
    int GetDisabledItemImage(LuaState *L);
    DWORD GetItemLineColor();

    void SetMultiExpanding(bool bMultiExpandable); 
    int GetExpandedItem();
    bool ExpandItem(int iIndex, bool bExpand);

    int SetPos(LuaState *L);
    int Move(LuaState *L);
    /*void DoEvent(TEventUI& event);
    void SetAttribute(LPCTSTR pstrName, LPCTSTR pstrValue);

    IListCallbackUI* GetTextCallback() const;
    void SetTextCallback(IListCallbackUI* pCallback);*/

    int GetScrollPos(LuaState *L);
    int GetScrollRange(LuaState *L);
    int SetScrollPos(LuaState *L);
    void LineUp();
    void LineDown();
    void PageUp();
    void PageDown();
    void HomeUp();
    void EndDown();
    void LineLeft();
    void LineRight();
    void PageLeft();
    void PageRight();
    void HomeLeft();
    void EndRight();
    void EnableScrollBar(bool bEnableVertical, bool bEnableHorizontal);
    int GetVerticalScrollBar(LuaState *L);
    int GetHorizontalScrollBar(LuaState *L);
    //BOOL SortItems(PULVCompareFunc pfnCompare, UINT_PTR dwData);

    BOOL CheckColumEditable(int nColum);
    int GetEditUI(LuaState *L);

    BOOL CheckColumComboBoxable(int nColum);
    int GetComboBoxUI(LuaState *L);
};

}

#endif //__LUA_LIST_H__